package com.phoenix.jsef.common;


import java.util.Set;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @version V1.0
 * @InterfaceName: ICacheManager
 * @Description:TODO(ICacheManager 对应提供的服务接口)
 * @author: 李启联
 * @date: 2018-11-22 10:01
 * @Copyright: Copyright (c) 2018-2018
 * 申明：本内容未经作者本人同意,禁止外泄以及用于其他的商业项目.
 */
public interface ICacheManager {

    /**
     * 存入缓存
     * @param key
     * @param cache
     */
    void putCache(String key, CacheEntity cache);


    /**
     * 存入缓存
     * @param key 键
     * @param datas 缓存数据
     * @param timeOut 超时时间
     */
    void putCache(String key, Object datas, long timeOut);

    /**
     * 存入缓存
     * @param key 键
     * @param datas 缓存数据
     * @param timeOut 超时时间
     * @param timeUnit 时间单位
     */
    void putCache(String key, Object datas, long timeOut, TimeUnit timeUnit);

    /**
     * 获取对应缓存
     * @param key
     * @return
     */
    CacheEntity getCacheByKey(String key);

    /**
     * 获取对应缓存
     * @param key
     * @return
     */
    Object getCacheDataByKey(String key);

    /**
     * 获取所有缓存
     * @param
     * @return
     */
    Map<String, CacheEntity> getCacheAll();

    /**
     * 判断是否在缓存中
     * @param key
     * @return
     */
    boolean isContains(String key);

    /**
     * 清除所有缓存
     */
    void clearAll();

    /**
     * 清除对应缓存
     * @param key
     */
    void clearByKey(String key);

    /**
     * 缓存是否超时失效
     * @param key
     * @return
     */
    boolean isTimeOut(String key);

    /**
     * 获取所有key
     * @return
     */
    Set<String> getAllKeys();

}